package com.mine.yyb.modules.sys.service;

import com.mine.yyb.common.utils.exception.MineException;
import com.mine.yyb.common.utils.jdbc.MinePagination;
import com.mine.yyb.modules.sys.bo.UserBO;
import com.mine.yyb.modules.sys.vo.UserVO;

/**
 * <pre>
 * <一句话功能简述>
 * 
 * 用户相关服务service
 * 
 * <功能详细描述>
 * </pre>
 * 
 * @author xuganhua
 * @version [版本号, 2015年12月13日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public interface IUserService
{
    
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 注册用户信息
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2015年12月13日]
     * @param userBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public UserVO registerUser(UserBO userBO)
        throws MineException;
        
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 发送邮件
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2016年1月21日]
     * @param userBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public void reSendEmail(UserBO userBO)
        throws MineException;
        
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 密码重置
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2016年2月17日]
     * @param userBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public String pwdRecovery(UserBO userBO)
        throws MineException;
        
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 激活用户
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2015年12月13日]
     * @param userBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public String activateUser(UserBO userBO)
        throws MineException;
        
    /**
     * <一句话功能简述>
     * 
     * 删除用户
     * 
     * <功能详细描述>
     * 
     * @param userBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public String deleteUser(UserBO userBO)
        throws MineException;
        
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 检查邮箱是否已存在
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2015年12月13日]
     * @param userBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public boolean isEmailExist(UserBO userBO)
        throws MineException;
        
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 检查用户名是都已经存在
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2015年12月13日]
     * @param userBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public boolean isUsernameExist(UserBO userBO)
        throws MineException;
        
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 校验指定的用户信息
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2015年12月21日]
     * @param userBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public UserVO queryTheUser(UserBO userBO)
        throws MineException;
        
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 分页查询用户信息
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2016年1月3日]
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public MinePagination<UserVO> queryUserList(UserBO userBO)
        throws MineException;
        
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 修改密码
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2016年1月18日]
     * @param userBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public String changeUserPwd(UserBO userBO)
        throws MineException;
        
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 更新用户信息
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2016年1月19日]
     * @param userBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public String updateUserPay(UserBO userBO)
        throws MineException;
    
    /** 
     * <pre>
     * <一句话功能简述>
     * 
     * 更新用户的QQ信息
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author  xuganhua
     * @version  [版本号, 2016年5月6日]
     * @param userBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public String updateUserQQ(UserBO userBO)
        throws MineException;
        
    /**
     * <pre>
     * <一句话功能简述>
     * 
     * 检查支付宝账号是否已经存在
     * 
     * <功能详细描述>
     * </pre>
     *
     * @author xuganhua
     * @version [版本号, 2016年3月14日]
     * @param userBO
     * @return
     * @throws MineException
     * @see [类、类#方法、类#成员]
     */
    public boolean isPayAccountExist(UserBO userBO)
        throws MineException;
}
